using System;
using System.Collections.Generic;
using System.Text;
using Unitins.Component.PersistenceLayer;
using Unitins.Component.ComponentMaster;

namespace Unitins.Component.Repository.Sepsi
{
    [Serializable]
    public class Paciente : IObject<Paciente>
    {
        #region Fields

        private Int64 idPaciente;
        private Int64 idPessoa;
        private Boolean possuiFilhos;
        private String idadeFilhos;
        private String nomeResponsavel;
        private Int32 idadeResponsavel;
        private String vinculoResponsavel;
        private String ocupacao;
        private String escolaridade;
        private Int32 horarioEstudo;
        private String andamentoEscolar;
        private String localEstudo;
        private String localTrabalho;
        private Int32 horarioTrabalho;
        private Int32 familiaresTrabalhando;
        private Boolean casaPropria;
        private Int32 numeroMoradoresCasa;
        private Boolean possuiCarro;
        private Boolean possuiMoto;

        #endregion Fields

        #region Properties

        public Int64 IdPaciente
        {
            get { return idPaciente; }
            set { idPaciente = value; }
        }

        public Int64 IdPessoa
        {
            get { return idPessoa; }
            set { idPessoa = value; }
        }

        public Boolean PossuiFilhos
        {
            get { return possuiFilhos; }
            set { possuiFilhos = value; }
        }

        public String IdadeFilhos
        {
            get { return idadeFilhos; }
            set { idadeFilhos = value; }
        }

        public String NomeResponsavel
        {
            get { return nomeResponsavel; }
            set { nomeResponsavel = value; }
        }

        public Int32 IdadeResponsavel
        {
            get { return idadeResponsavel; }
            set { idadeResponsavel = value; }
        }

        public String VinculoResponsavel
        {
            get { return vinculoResponsavel; }
            set { vinculoResponsavel = value; }
        }

        public String Ocupacao
        {
            get { return ocupacao; }
            set { ocupacao = value; }
        }

        public String Escolaridade
        {
            get { return escolaridade; }
            set { escolaridade = value; }
        }

        public Int32 HorarioEstudo
        {
            get { return horarioEstudo; }
            set { horarioEstudo = value; }
        }

        public String AndamentoEscolar
        {
            get { return andamentoEscolar; }
            set { andamentoEscolar = value; }
        }

        public String LocalEstudo
        {
            get { return localEstudo; }
            set { localEstudo = value; }
        }

        public String LocalTrabalho
        {
            get { return localTrabalho; }
            set { localTrabalho = value; }
        }

        public Int32 HorarioTrabalho
        {
            get { return horarioTrabalho; }
            set { horarioTrabalho = value; }
        }

        public Int32 FamiliaresTrabalhando
        {
            get { return familiaresTrabalhando; }
            set { familiaresTrabalhando = value; }
        }

        public Boolean CasaPropria
        {
            get { return casaPropria; }
            set { casaPropria = value; }
        }

        public Int32 NumeroMoradoresCasa
        {
            get { return numeroMoradoresCasa; }
            set { numeroMoradoresCasa = value; }
        }

        public Boolean PossuiCarro
        {
            get { return possuiCarro; }
            set { possuiCarro = value; }
        }

        public Boolean PossuiMoto
        {
            get { return possuiMoto; }
            set { possuiMoto = value; }
        }

        #endregion Properties

        #region Constructor

        public Paciente()
        {
        }

        public Paciente(Int64 idPaciente, Int64 idPessoa, Boolean possuiFilhos, String idadeFilhos, String nomeResponsavel, Int32 idadeResponsavel, String vinculoResponsavel, String ocupacao, String escolaridade, Int32 horarioEstudo, String andamentoEscolar, String localEstudo, String localTrabalho, Int32 horarioTrabalho, Int32 familiaresTrabalhando, Boolean casaPropria, Int32 numeroMoradoresCasa, Boolean possuiCarro, Boolean possuiMoto)
        {
            this.IdPaciente = idPaciente;
            this.IdPessoa = idPessoa;
            this.PossuiFilhos = possuiFilhos;
            this.IdadeFilhos = idadeFilhos;
            this.NomeResponsavel = nomeResponsavel;
            this.IdadeResponsavel = idadeResponsavel;
            this.VinculoResponsavel = vinculoResponsavel;
            this.Ocupacao = ocupacao;
            this.Escolaridade = escolaridade;
            this.HorarioEstudo = horarioEstudo;
            this.AndamentoEscolar = andamentoEscolar;
            this.LocalEstudo = localEstudo;
            this.LocalTrabalho = localTrabalho;
            this.HorarioTrabalho = horarioTrabalho;
            this.FamiliaresTrabalhando = familiaresTrabalhando;
            this.CasaPropria = casaPropria;
            this.NumeroMoradoresCasa = numeroMoradoresCasa;
            this.PossuiCarro = possuiCarro;
            this.PossuiMoto = possuiMoto;
        }

        #endregion Constructors

        #region Methods Overrides

        public String GetToString()
        {
            return
            (
                "{IdPaciente : " + this.IdPaciente + "} " + Environment.NewLine +
                "{IdPessoa : " + this.IdPessoa + "} " + Environment.NewLine +
                "{PossuiFilhos : " + this.PossuiFilhos + "} " + Environment.NewLine +
                "{IdadeFilhos : " + this.IdadeFilhos + "} " + Environment.NewLine +
                "{NomeResponsavel : " + this.NomeResponsavel + "} " + Environment.NewLine +
                "{IdadeResponsavel : " + this.IdadeResponsavel + "} " + Environment.NewLine +
                "{VinculoResponsavel : " + this.VinculoResponsavel + "} " + Environment.NewLine +
                "{Ocupacao : " + this.Ocupacao + "} " + Environment.NewLine +
                "{Escolaridade : " + this.Escolaridade + "} " + Environment.NewLine +
                "{HorarioEstudo : " + this.HorarioEstudo + "} " + Environment.NewLine +
                "{AndamentoEscolar : " + this.AndamentoEscolar + "} " + Environment.NewLine +
                "{LocalEstudo : " + this.LocalEstudo + "} " + Environment.NewLine +
                "{LocalTrabalho : " + this.LocalTrabalho + "} " + Environment.NewLine +
                "{HorarioTrabalho : " + this.HorarioTrabalho + "} " + Environment.NewLine +
                "{FamiliaresTrabalhando : " + this.FamiliaresTrabalhando + "} " + Environment.NewLine +
                "{CasaPropria : " + this.CasaPropria + "} " + Environment.NewLine +
                "{NumeroMoradoresCasa : " + this.NumeroMoradoresCasa + "} " + Environment.NewLine +
                "{PossuiCarro : " + this.PossuiCarro + "} " + Environment.NewLine +
                "{PossuiMoto : " + this.PossuiMoto + "} " + Environment.NewLine +
                ""
             );
        }

        public object Clone()
        {
            Paciente objPaciente = new Paciente();

            objPaciente.IdPaciente = this.IdPaciente;
            objPaciente.IdPessoa = this.IdPessoa;
            objPaciente.PossuiFilhos = this.PossuiFilhos;
            objPaciente.IdadeFilhos = this.IdadeFilhos;
            objPaciente.NomeResponsavel = this.NomeResponsavel;
            objPaciente.IdadeResponsavel = this.IdadeResponsavel;
            objPaciente.VinculoResponsavel = this.VinculoResponsavel;
            objPaciente.Ocupacao = this.Ocupacao;
            objPaciente.Escolaridade = this.Escolaridade;
            objPaciente.HorarioEstudo = this.HorarioEstudo;
            objPaciente.AndamentoEscolar = this.AndamentoEscolar;
            objPaciente.LocalEstudo = this.LocalEstudo;
            objPaciente.LocalTrabalho = this.LocalTrabalho;
            objPaciente.HorarioTrabalho = this.HorarioTrabalho;
            objPaciente.FamiliaresTrabalhando = this.FamiliaresTrabalhando;
            objPaciente.CasaPropria = this.CasaPropria;
            objPaciente.NumeroMoradoresCasa = this.NumeroMoradoresCasa;
            objPaciente.PossuiCarro = this.PossuiCarro;
            objPaciente.PossuiMoto = this.PossuiMoto;

            return objPaciente;
        }

        #endregion Methods Overrides

    }

    public enum PacienteAttribute
    {
        IdPaciente = 0,
        IdPessoa = 1,
        PossuiFilhos = 2,
        IdadeFilhos = 3,
        NomeResponsavel = 4,
        IdadeResponsavel = 5,
        VinculoResponsavel = 6,
        Ocupacao = 7,
        Escolaridade = 8,
        HorarioEstudo = 9,
        AndamentoEscolar = 10,
        LocalEstudo = 11,
        LocalTrabalho = 12,
        HorarioTrabalho = 13,
        FamiliaresTrabalhando = 14,
        CasaPropria = 15,
        NumeroMoradoresCasa = 16,
        PossuiCarro = 17,
        PossuiMoto = 18,
    }
}
